nexus\api\data_link/
nexus.rs

1use super::{get_resource, read_resource};
2use imgui::sys::ImFont;
3
4/// Nexus link identifier.
5pub const NEXUS_LINK: &str = NexusLink::LINK;
6
7/// Nexus link data.
8#[derive(Debug, Clone)]
9#[cfg_attr(feature = "serde", derive(serde::Serialize))]
10#[repr(C)]
11pub struct NexusLink {
12    pub width: u32,
13    pub height: u32,
14    pub scaling: f32,
15    pub is_moving: bool,
16    pub is_camera_moving: bool,
17    pub is_gameplay: bool,
18
19    #[cfg_attr(feature = "serde", serde(skip))]
20    pub font: *mut ImFont,
21
22    #[cfg_attr(feature = "serde", serde(skip))]
23    pub font_big: *mut ImFont,
24
25    #[cfg_attr(feature = "serde", serde(skip))]
26    pub font_ui: *mut ImFont,
27}
28
29impl NexusLink {
30    /// Nexus link identifier.
31    pub const LINK: &str = "DL_NEXUS_LINK";
32
33    /// Returns the shared [`NexusLink`] pointer.
34    #[inline]
35    pub fn get() -> *const Self {
36        get_resource(Self::LINK)
37    }
38
39    /// Reads the shared [`NexusLink`] data.
40    #[inline]
41    pub fn read() -> Option<NexusLink> {
42        unsafe { read_resource(Self::LINK) }
43    }
44}
45
46/// Returns the shared [`NexusLink`] pointer.
47#[inline]
48pub fn get_nexus_link() -> *const NexusLink {
49    NexusLink::get()
50}
51
52/// Reads the shared [`NexusLink`] data.
53#[inline]
54pub fn read_nexus_link() -> Option<NexusLink> {
55    NexusLink::read()
56}